package com.ruiben.mall;

import com.ruiben.mall.pojo.*;
import com.ruiben.mall.utils.PagedResult;

import java.math.BigDecimal;
import java.util.List;

public interface IOrderService {

    /**
     * 插入订单
     * orderstatus 订单状态（1未付款2已付款3已发货4待评价5已评价6退换货7取消订单）
     * @return
     */
    UserOrder addOrder(String userId, String[] cartIds,String addressId);

    /**
     * 更新订单
     * orderstatus 订单状态（1未付款2已付款3已发货4待评价5已评价6退换货7取消订单）
     * @return
     */
    boolean updateOrderProduct(String orderId, List<UserOrderProduct> userOrderProducts, BigDecimal productTotal);

    /**
     * 根据订单id获取详细订单
     * @param orderId
     * @return
     */
    UserOrder getOrderById(String orderId);


    UserOrder getOrderById(String orderId,String orderNo);

    UserOrder getOrderByOrderNo(String orderNo);


    /**
     * 根据用户id获取订单
     */
    PagedResult getOrderList(String userId, int page, int pageSize);

    /**
     * 根据 id获取订单详情
     * @param id
     * @return
     */
    UserOrder getOrderDetailById(String id,int status);


    /**
     * 退换货
     * @param back
     * @return
     */
    boolean returnGoods(UserOrderBack back,String goodId);


    /**
     *  获取退换货列表
     * @return
     */
    PagedResult getUserOrderBackList(int page, int pageSize, Integer orderBackStatus);


    /**
     * 根据id获取订单售后详情
     * @param id
     * @return
     */
    UserOrderBack getUserOrderBackDetailById(String id);


    /**
     * 确认订单
     */
    boolean finishOrderBack(UserOrderBack userOrderBack);

    boolean confirmOrder(String userAddressId, String orderId,int paytype,String orderContent);


    /**
     * 根据状态获取订单
     * @param userId
     * @param status
     * @param page
     * @param pageSize
     * @return
     */
    PagedResult getOrderListForStatus(String userId, int status, int page, int pageSize);


    boolean updateOrder(UserOrder order);

    boolean delOrder(String id);

    UserOrder getCommentGoodsList(String orderId);
}
